import request from '@/utils/request';
import qs from 'qs';
import { ResponseData } from '../typing';
export interface OperateParams {
    traceId: string;
    userId: string;
    userType: string;
    module: string;
    name: string;
    type: string;
    content: string;
    exts: string;
    requestMethod: string;
    requestUrl: string;
    userIp: string;
    userAgent: string;
    javaMethod: string;
    javaMethodArgs: string;
    startTime: string;
    duration: string;
    resultCode: string;
    resultMsg: string;
    resultData: string;
    createTime: string;
    current: number;
    size: number;
}
// 响应接口
export interface GetOperateLogPageRes {
    code: number;
    data: {
        size: number;
        total: number;
        records: {
            createTime: Record<string, unknown>;
            updateTime: Record<string, unknown>;
            creator: number;
            updater: number;
            tenantId: number;
            // 日志主键 */
            id: number;
            // 链路追踪编号 */
            traceId: string;
            // 用户编号 */
            userId: number;
            // 用户类型 */
            userType: number;
            // 模块标题 */
            module: string;
            // 操作名 */
            name: string;
            // 操作分类 */
            type: number;
            // 操作内容 */
            content: string;
            // 拓展字段 */
            exts: string;
            // 请求方法名 */
            requestMethod: string;
            // 请求地址 */
            requestUrl: string;
            // 用户 IP */
            userIp: string;
            // 浏览器 UA */
            userAgent: string;
            // Java 方法名 */
            javaMethod: string;
            // Java 方法的参数 */
            javaMethodArgs: string;
            // 操作时间 */
            startTime: Record<string, unknown>;
            // 执行时长 */
            duration: number;
            // 结果码 */
            resultCode: number;
            // 结果提示 */
            resultMsg: string;
            // 结果数据 */
            resultData: string;
        }[];
        current: number;
        pages: number;
    };
    msg: string;
}
/**
 * 获得操作日志记录分页
 * @param {string} traceId 链路追踪编号
 * @param {string} userId 用户编号
 * @param {string} userType 用户类型
 * @param {string} module 模块标题
 * @param {string} name 操作名
 * @param {string} type 操作分类
 * @param {string} content 操作内容
 * @param {string} exts 拓展字段
 * @param {string} requestMethod 请求方法名
 * @param {string} requestUrl 请求地址
 * @param {string} userIp 用户 IP
 * @param {string} userAgent 浏览器 UA
 * @param {string} javaMethod Java 方法名
 * @param {string} javaMethodArgs Java 方法的参数
 * @param {string} startTime 操作时间
 * @param {string} duration 执行时长
 * @param {string} resultCode 结果码
 * @param {string} resultMsg 结果提示
 * @param {string} resultData 结果数据
 * @param {string} createTime 创建时间
 * @param {number} current 当前第几页(默认1)
 * @param {number} size 每页条数(默认20)
 * @returns
 */
export function getOperateLogPage(params: Partial<OperateParams>): Promise<GetOperateLogPageRes> {
    return request.get(`/system/operate-log/page`, { params: params });
}
// 响应接口
export interface ExportOperateLogExcelRes {}
/**
 * 导出操作日志记录 Excel
 * @param {string} traceId 链路追踪编号
 * @param {string} userId 用户编号
 * @param {string} userType 用户类型
 * @param {string} module 模块标题
 * @param {string} name 操作名
 * @param {string} type 操作分类
 * @param {string} content 操作内容
 * @param {string} exts 拓展字段
 * @param {string} requestMethod 请求方法名
 * @param {string} requestUrl 请求地址
 * @param {string} userIp 用户 IP
 * @param {string} userAgent 浏览器 UA
 * @param {string} javaMethod Java 方法名
 * @param {string} javaMethodArgs Java 方法的参数
 * @param {string} startTime 操作时间
 * @param {string} duration 执行时长
 * @param {string} resultCode 结果码
 * @param {string} resultMsg 结果提示
 * @param {string} resultData 结果数据
 * @param {string} createTime 创建时间
 * @param {number} current 当前第几页(默认1)
 * @param {number} size 每页条数(默认20)
 * @returns
 */
export function exportOperateLogExcel(params: Partial<OperateParams>): Promise<Blob> {
    return request.get(`/system/operate-log/export-excel??${qs.stringify(params)}`, {
        responseType: 'blob',
    });
}
